package IO;

import java.io.*;


/**
 * IO流拷贝文件核心六步曲：
 *      1.创建字符输入流对象，关联数据源文件
 *      2.创建字符输出流对象，关联目的地文件
 *      3.定义变量，记录读取到的内容
 *      4.循环读取，只要条件满足就一直读取，并将读到的内容赋值给变量
 *      5.将读取到的数据写入到  目的地文件中
 *      6.释放资源
*/

public class CopyData {
    public static void main(String[] args) throws IOException {
        // 1.创建字符输入流对象，关联数据源文件
        Reader r = new FileReader("D:\\code\\2.txt");
        // 2.创建字符输出流对象，关联目的地文件
        Writer w = new FileWriter("D:\\code\\拷贝到这里来");
        char[] cArray = new char[1024];
        /*
            以字符数组的形式进行IO流拷贝操作时，所定义数组的长度最好是1024的整数倍。
         */
        // 3.定义变量，记录读取到的内容 (此处实际记录读取的有效字符数，读取到的内容保存在字符数组中)
        int len;
        // 4.循环读取，只要条件满足就一直读取，并将读到的内容赋值给变量
        while ((len = r.read(cArray)) != -1)
        {
            // 5.将读取到的内容写入到目的地文件中
            w.write(cArray, 0, len);
            //这个write重载方法我们在上文“以字符数组的形式写入”那里讲过噢
        }
        System.out.println("数组：");
        System.out.println(cArray);
        //后面那一长串尾巴是定义的cArray中没内容的空字符
        System.out.println("" + cArray);
        /*
            如果输出语句中写作了 “” + cArray, 那么打印出的cArray就只是它的地址值，
            所以此处应该分开写。
         */
        // 6.释放资源
        r.close();
        w.close();
    }
}
